home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Celestin Apprentice 5
/
Apprentice-Release5.iso
/
Information
/
CSMP Digest
/
volume 1
/
csmp-v1-211.txt
< prev
next >
Wrap
Text File
|
1992-12-31
|
61KB
|
1,430 lines
C.S.M.P. Digest Mon, 09 Nov 92 Volume 1 : Issue 211
Today's Topics:
Moving the mouse pointer-- how?
Crippled LC Sound Chip? (was Re: Sound Manager Phooey!)
Execution timing of ODOC
ICMP
CountAppFiles --- and starting a child process
Disassembly with source in MPW?
The Comp.Sys.Mac.Programmer Digest is moderated by Michael A. Kelly.
The digest is a collection of article threads from the internet newsgroup
comp.sys.mac.programmer. It is designed for people who read c.s.m.p. semi-
regularly and want an archive of the discussions. If you don't know what a
newsgroup is, you probably don't have access to it. Ask your systems
administrator(s) for details. (This means you can't post questions to the
digest.)
Each issue of the digest contains one or more sets of articles (called
threads), with each set corresponding to a 'discussion' of a particular
subject. The articles are not edited; all articles included in this digest
are in their original posted form (as received by our news server at
cs.uoregon.edu). Article threads are not added to the digest until the last
article added to the thread is at least one month old (this is to ensure that
the thread is dead before adding it to the digest). Article threads that
consist of only one message are generally not included in the digest.
The entire digest is available for anonymous ftp from ftp.cs.uoregon.edu
[128.223.8.8] in the directory /pub/mac/csmp-digest. Be sure to read the
file /pub/mac/csmp-digest/README before downloading any files. The most
recent issues are available from sumex-aim.stanford.edu [36.44.0.6] in the
directory /info-mac/digest/csmp. If you don't have ftp capability, the sumex
archive has a mail server; send a message with the text '$MACarch help' (no
quotes) to LISTSERV@ricevm1.rice.edu for more information.
The digest is also available via email. Just send a note saying that you
want to be on the digest mailing list to mkelly@cs.uoregon.edu, and you will
automatically receive each new issue as it is created. Sorry, back issues
are not available through the mailing list.
Send administrative mail to mkelly@cs.uoregon.edu.
-------------------------------------------------------
From: jkreibic@sumter.cso.uiuc.edu (Jay Arnold Kreibich)
Subject: Moving the mouse pointer-- how?
Organization: University of Illinois at Urbana
Date: Thu, 1 Oct 1992 20:19:21 GMT
I am writing a driver program that needs to move the mouse cursor
location around the screen, but I'm not quite sure how to do that. Any
tips on where to lookup functions that will assign a new mouse pointer
location?
Thanks o lot!
- -Jay Kreibich
jkreibic@uiuc.edu
+++++++++++++++++++++++++++
From: zocca@amc.uva.nl (Vincent Zocca)
Date: Sun, 4 Oct 1992 10:34:08 GMT
Organization: Uni. of Amsterdam, Fac. of Med.
In article <BvGLsF.F1n@news.cso.uiuc.edu>, jkreibic@sumter.cso.uiuc.edu
(Jay Arnold Kreibich) wrote:
> I am writing a driver program that needs to move the mouse cursor
> location around the screen, but I'm not quite sure how to do that. Any
> tips on where to lookup functions that will assign a new mouse pointer
> location?
As far as I know it just can't be done. I think you've got to hide the
cursor and make apear something that looks like a cursor but isn't.
------------------------------------------
| Vincent Zocca |
| |
| University of Amsterdam |
| Faculty of medicine |
| Meibergdreef 9 |
| 1105 AZ Amsterdam |
| Phone: (***31) (0)20 5664403 |
------------------------------------------
+++++++++++++++++++++++++++
From: brianc@acuson.com (Brian Cox)
Date: 6 Oct 92 00:28:46 GMT
Organization: Acuson; Mountain View, California
jkreibic@sumter.cso.uiuc.edu (Jay Arnold Kreibich) writes:
> I am writing a driver program that needs to move the mouse cursor
>location around the screen, but I'm not quite sure how to do that. Any
>tips on where to lookup functions that will assign a new mouse pointer
>location?
> Thanks o lot!
>-Jay Kreibich
> jkreibic@uiuc.edu
Without getting in to the subjective merits of doing so, I'll just
mention that Apple strongly discourages moving the mouse sprite
without an analogous action from the user. They discourage it to
the extent that they don't provide a routine that does it. You
might try hiding the cursor and drawing your own. But that would
get really ugly fast...
Are you really sure that you want to move the mouse cursor?
--BC--
- --
--Brian Cox--
- ------------------
+++++++++++++++++++++++++++
From: zobkiw@world.std.com (Joe Zobkiw)
Date: 6 Oct 92 12:39:07 GMT
Organization: The World Public Access UNIX, Brookline, MA
Brian Cox writes:
"They discourage it to
the extent that they don't provide a routine that does it."
They also don't provide a routine to read a PICT file ;)
- --
- -------------------------------------------------------------
joe zobkiw zobkiw@world.std.com aol: aflzobkiw
macintosh.midi.synthesis.c.oop.asm.communications.graphics...
+++++++++++++++++++++++++++
From: Michael F. Kamprath <kamprath@space-grant.sprl.umich.edu>
Date: Tue, 06 Oct 92 13:21:46 EDT
Organization: University of Michigan, Aerospace Engineering
In article <1992Oct6.002846.10641@acuson.com> Brian Cox, brianc@acuson.com writes:
>jkreibic@sumter.cso.uiuc.edu (Jay Arnold Kreibich) writes:
>
>
>
>> I am writing a driver program that needs to move the mouse cursor
>>location around the screen, but I'm not quite sure how to do that. Any
>>tips on where to lookup functions that will assign a new mouse pointer
>>location?
>
>> Thanks o lot!
>
>>-Jay Kreibich
>> jkreibic@uiuc.edu
>
>
>Without getting in to the subjective merits of doing so, I'll just
>mention that Apple strongly discourages moving the mouse sprite
>without an analogous action from the user. They discourage it to
>the extent that they don't provide a routine that does it. You
>might try hiding the cursor and drawing your own. But that would
>get really ugly fast...
>
But it has to be possible . . . my reason for saying this is that MacX allows
the cursor to be under the client's control (a nice feature of X-windows).
MacX is written by Apple, who surely know how to do this.
========================================================================
| Michael F. Kamprath | The University of Michigan |
| kamprath@space-grant.sprl.umich.edu | Aerospace Engineering |
| kamprath@engin.umich.edu | |
+---------------------------------------+------------------------------+
| This country is a _democracy_. It is NOT a "Two Party Sytem." DO |
| NOT believe The Lie that not voting Republican or Democratic will |
| waste your vote. Vote for who ever you please, and let the |
| politicians find out what a democratic government is all about. |
========================================================================
+++++++++++++++++++++++++++
From: grobbins@Apple.COM (Grobbins)
Date: 6 Oct 92 19:54:56 GMT
Organization: Apple Computer Inc., Cupertino, CA
In article <1992Oct6.002846.10641@acuson.com> brianc@acuson.com (Brian Cox) writes:
>jkreibic@sumter.cso.uiuc.edu (Jay Arnold Kreibich) writes:
>> I am writing a driver program that needs to move the mouse cursor
>>location around the screen, but I'm not quite sure how to do that. Any
>>tips on where to lookup functions that will assign a new mouse pointer
>>location?
>
>Without getting in to the subjective merits of doing so, I'll just
>mention that Apple strongly discourages moving the mouse sprite
>without an analogous action from the user. They discourage it to
>the extent that they don't provide a routine that does it.
While programmatic control of the mouse is discouraged, the
steps necessary are documented by DTS. Pasted below are two of
several entries from the Q&A Stack on mouse movement.
Grobbins grobbins@apple.com
- ---
from the Q&A Stack (available in the dts area of ftp.apple.com):
I'm writing a tablet (mouse, pointer, etc.) driver, and I need to be able to
position the cursor and post mouseUp mouseDown events. How do I do it?
Here is an explanation of the Macintosh@ mouse/cursor mechanism, which
should provide the information necessary for you to place the cursor:
The mouse is a "relative" device, which means it does not return actual
coordinates; it returns a "count" or amount of movement since the last
report.
When the mouse has new information, it interrupts the Macintosh. The
interrupt handler adds the horizontal and vertical counts to MTemp (a
low-memory location), and sets crsrNew to tell the system that the
coordinates are new. Some time later (but before normal VBLs are executed)
the cursor VBL task is executed, and it compares MTemp with RawMouse (which
has the last value), and figures out the delta (that is, the horizontal and
vertical distance moved), and does the scaling trick depending on what the
user has selected in the control panel. It also updates MTemp to reflect the
new value. Then it draws the cursor.
Here are the names and locations of the relevant low-memory locations:
RawMouse equ $82C ;point
MTemp equ $828 ;point
CrsrNew equ $8CE ;byte
CrsrCouple equ $8CF ;byte
(NOTE: These may change in future CPUs.)
If you wish to place the cursor in an absolute location on the screen, you
must set RawMouse, and MTemp to the same value, and set CrsrNew to the same
value as CrsrCouple.
Keep in mind that moving the cursor from an application may violate the
Human Interface Guidelines, possibly confusing and frustrating the user.
Also keep in mind that the low-memory locations named above are not
documented, and as such, are considered unsupported and volatile.
Posting mouse down/up events is a simple matter of keeping track of the last
state of your device button, and when you detect a change, you post the
appropriate event. If you wish to support the ToolBox Event Manager call
Button, you must also update the low-memory global MBState. The high bit of
MBState reflects the current state of the mouse button: 1 = button up, 0 =
button down.
Unfortunately, the system mouse driver will change this value if it notices
that the state of MBState is different from the state of the real mouse
button. This means if there is a mouse connected to the Macintosh while your
device is connected, it will override whatever you put in MBState. On
systems equipped with ADB, this will happen only when the mouse moves, or
the button is pressed. On earlier systems this happens all the time, since
the button checking routine was a VBL task, and is always executed. One
possible workaround is to patch Button, and return the state of your button,
rather than MBState. The obvious problem is that you disable the real mouse
from working with Button.
- ----
How can I programmatically move the Macintosh@ mouse without the real mouse
interfering?
The real answer to your question is twofold: First, you can do exactly what
you want to do with the sample included below. HOWEVER, this is not a good
thing to do, it would be better if you took the solution used in Apple's
Guided Tour disks: Always hide the cursor and then decouple the cursor from
the mouse. Then, instead of using the system's cursor, simply draw your own
"cursor" using QuickDraw and treat it as a little animated bitmap on the
screen. This avoids all the problems that you have with the mouse competing.
(Apple does update the mouse globals with the mouse position so that other
things function correctly.)
Now, as promised, here is the way to do what you want using the real cursor.
As you have discovered, setting the crsrCouple variable to false prohibits
the mouse from affecting the cursor; unfortunately, it also prohibits the
jcrsrTask routine from drawing the cursor. The solution to this is to set
crsr couple to true, call the cursor drawing routine jCrsrTask yourself, and
then set the crsrCouple variable to false, as shown below:
procedure callcrsr;
inline $2078 ,$08EE ,$4E90;
{ move.L jcrsrTask,A0
jsr (A0) }
Procedure FudgeMouse;
type PointPtr=^Point;
var RawMouse:PointPtr;
MTemp:PointPtr;
RandPt:Point;
CrsrNew:ptr;
CrsrCouple:ptr;
fred:Longint;
begin
RawMouse:=PointPtr($82C);
MTemp:=PointPtr($828);
CrsrNew:=ptr($8CE);
CrsrCouple:=ptr($8CF);
RandPt:=RawMouse^;
repeat
RandPt.h:=RandPt.h+1;
RandPt.V:=RandPt.v+1;
RawMouse^:=RandPt;
MTemp^:=RandPt;
CrsrNew^:=1;
CrsrCouple^:=1;
callCrsr;
crsrCouple^:=0;
repeat until fred<tickCount;
fred:=tickCount+3;
until Button;
crsrCouple^:=1;
end;
+++++++++++++++++++++++++++
From: paulr@syma.sussex.ac.uk (Paul Russell)
Organization: University of Sussex
Date: Wed, 7 Oct 1992 14:31:06 GMT
>>jkreibic@sumter.cso.uiuc.edu (Jay Arnold Kreibich) writes:
>>
>>
>>
>>> I am writing a driver program that needs to move the mouse cursor
>>>location around the screen, but I'm not quite sure how to do that. Any
>>>tips on where to lookup functions that will assign a new mouse pointer
>>>location?
>>
Shame on me for posting this - my only excuse is that I work in a
psychology department... ;-) This code was written by me a long time
ago, and may be freely used...
- ---
unit UMouseStuff; { mouse utilities }
interface
procedure SetMouse (pt: Point); { move the current cursor position to the given point }
implementation
const { low memory globals }
jCrsrTask = $08EE; { ProcPtr }
MTemp = $0828; { Point - Low Level interupt mouse location }
RawMouse = $082C; { Point - unprocessed mouse location }
Mouse = $830; { Point - processed mouse location }
CrsrNew = $08CE; { char - set != 0 if mouse has moved }
CrsrCouple = $08CF; { char - set = 0 if cursor not allowed to move }
type
PointPtr = ^Point; { a pointer to a point }
{--- private functions for accessing low memory globals ---}
function Get_MTemp: Point;
begin
Get_MTemp := PointPtr(MTemp)^;
end; { Get_MTemp }
procedure Set_MTemp (pt: Point);
var
ptp: PointPtr;
begin
ptp := PointPtr(MTemp);
ptp^ := pt;
end; { Set_MTemp }
function Get_RawMouse: Point;
begin
Get_RawMouse := PointPtr(RawMouse)^;
end; { Get_RawMouse }
procedure Set_RawMouse (pt: Point);
var
ptp: PointPtr;
begin
ptp := PointPtr(RawMouse);
ptp^ := pt;
end; { Set_RawMouse }
function Get_Mouse: Point;
begin
Get_Mouse := PointPtr(Mouse)^;
end; { Get_Mouse }
procedure Set_Mouse (pt: Point);
var
ptp: PointPtr;
begin
ptp := PointPtr(Mouse);
ptp^ := pt;
end; { Set_Mouse }
procedure Set_CrsrNew;
var
p: Ptr;
begin
p := Ptr(CrsrNew);
p^ := 1;
end;
procedure SetMouse (pt: Point);
begin
Set_MTemp(pt); { set both of these low memory mouse positions to the new point }
Set_RawMouse(pt); { (this prevents scaling) }
Set_CrsrNew; { flag that the mouse has moved }
end; { SetMouse }
end.
- ---
| Paul Russell | "Some instructions have legal operation codes |
| Experimental Psychology | but try to perform nonsensical operations. |
| Sussex University, Falmer | These are called insane instructions." |
| Brighton BN1 9QG, England | -- Motorola DSP 56k User's Manual |
- --
| Paul Russell | "Some instructions have legal operation codes |
| Experimental Psychology | but try to perform nonsensical operations. |
| Sussex University, Falmer | These are called insane instructions." |
| Brighton BN1 9QG, England | -- Motorola DSP 56k User's Manual |
---------------------------
From: bernard@cs.colorado.edu (Bernie Bernstein)
Subject: Crippled LC Sound Chip? (was Re: Sound Manager Phooey!)
Organization: University of Colorado at Boulder
Date: Tue, 6 Oct 1992 16:02:47 GMT
In article <1992Oct5.022712.3448@news.cs.brandeis.edu>,
dan@chaos.cs.brandeis.edu (Dan Schwarz) wrote:
>
> In article <w=mz_wc@rpi.edu> johnsd2@rpi.edu writes:
> >I am having a problem with an extension I am writing. This extension
> >is really a background app (type='appe'), which plays sounds asynchronously
> >in the background (which sounds are specified with annother program, that
> >works);
> ...
> >This strange freeze happens on a friends LC whenever
> >the sound is played, even from an APPL. (but only if its
> >asynchronously)
>
> Speaking as a programmer who has done some SERIOUS sound manager hacking,
> I can sympathize with your frustration. Here's what I can tell you:
>
> * the Mac LC uses a crippled version of the Apple Sound Chip. So does the LC II
> and Classic II, by the way. Major difference is that this chip can only handle
> monophonic sound output, and cannot support simultaneous sound recording &
> playback.
I recently wrote a hack which listens to the sound input device, filling a
bunch of buffers. It then plays back random buffers while continuing to
fill or replace the other buffers. Everything is done asynchronously.
According to the above quote, this is impossible to do on a Mac LC.
I have been getting email from several LC users who say that the program
seems to fill the buffers correctly, but nothing is played back. This seems
to fit with the "crippled chip" theory.
Is there any gestalt call to see if the current machine has the "crippled
chip"? I would like my program to continue to work the way it is now on
most machines, but use a workaround for the crippled machines.
o, ,, , | Bernie Bernstein | , ,,
L>O/ `,/ ` ,| University of Colorado at Boulder |/ `,,/ `
O./ ' / . `, / | home: 303-444-3168 | / ` ` ,.
,/ / , ' | email: bernard@cs.colorado.edu | / '' `
+++++++++++++++++++++++++++
From: REEKES@applelink.apple.com (Jim Reekes)
Date: 8 Oct 92 19:40:09 GMT
Organization: Apple Computer, Inc.
In article <bernard-061092095702@kashmir.cs.colorado.edu>,
bernard@cs.colorado.edu (Bernie Bernstein) wrote:
>
> In article <1992Oct5.022712.3448@news.cs.brandeis.edu>,
> dan@chaos.cs.brandeis.edu (Dan Schwarz) wrote:
> >
> > In article <w=mz_wc@rpi.edu> johnsd2@rpi.edu writes:
> > >I am having a problem with an extension I am writing. This extension
> > >is really a background app (type='appe'), which plays sounds asynchronously
> > >in the background (which sounds are specified with annother program, that
> > >works);
> > ...
> > >This strange freeze happens on a friends LC whenever
> > >the sound is played, even from an APPL. (but only if its
> > >asynchronously)
> >
> > Speaking as a programmer who has done some SERIOUS sound manager hacking,
> > I can sympathize with your frustration. Here's what I can tell you:
> >
> > * the Mac LC uses a crippled version of the Apple Sound Chip. So does the LC II
> > and Classic II, by the way. Major difference is that this chip can only handle
> > monophonic sound output, and cannot support simultaneous sound recording &
> > playback.
>
> I recently wrote a hack which listens to the sound input device, filling a
> bunch of buffers. It then plays back random buffers while continuing to
> fill or replace the other buffers. Everything is done asynchronously.
> According to the above quote, this is impossible to do on a Mac LC.
>
> I have been getting email from several LC users who say that the program
> seems to fill the buffers correctly, but nothing is played back. This seems
> to fit with the "crippled chip" theory.
>
> Is there any gestalt call to see if the current machine has the "crippled
> chip"? I would like my program to continue to work the way it is now on
> most machines, but use a workaround for the crippled machines.
All of this talk about a sound chip being "crippled" is off target. The
Mac LC was designed to have the sound chip that is does. It wasn't
crippled.
The Mac LC has Sound Hardware that mimics _some_ of the functionality of
the Apple Sound Chip. It cannot do stereo. It only has one FIFO. This
FIFO is shared by both input and output. You cannot record and playback
at the same time on a Mac LC because of this.
We've added a Gestalt bit to determine if the machine can do this. It's
in System 7.1.
/* built-in hardware can play and record simultaneously */
gestaltPlayAndRecord = 6,
For older system releases you can check if the machine can perform stereo.
If this is true, then you should be able to record and playback at the
same time. Always check for the gestaltPlayAndRecord first, since this
is alway more accurate than the gestaltStereoCapability flag.
- -----------------------------------------------------------------------
Jim Reekes, Polterzeitgeist | Macintosh Toolbox Engineering
| Sound Manager Expert
Apple Computer, Inc. | RAll opinions expressed are mine, and do
20525 Mariani Ave. MS: 81-KS | not necessarily represent those of my
Cupertino, CA 95014 | employer, Apple Computer Inc.S
---------------------------
From: kamprath@space-grant.sprl.umich.edu (Michael F. Kamprath)
Subject: Execution timing of ODOC
Date: 5 Oct 92 17:05:20 GMT
Organization: University of Michigan, Aerospace Engineering
Whenever I send my application an open document event from outside the
application, it will not actually open the document until I bring the
application to the front. How do I get the program to open it imediately
while it is still in the background? I assume this ia an easy one, but I
just don't see it.
========================================================================
| Michael F. Kamprath | The University of Michigan |
| kamprath@space-grant.sprl.umich.edu | Aerospace Engineering |
| kamprath@engin.umich.edu | |
+---------------------------------------+------------------------------+
| This country is a _democracy_. It is NOT a "Two Party Sytem." DO |
| NOT believe The Lie that not voting Republican or Democratic will |
| waste your vote. Vote for who ever you please, and let the |
| politicians find out what a democratic government is all about. |
========================================================================
+++++++++++++++++++++++++++
From: schulte@KLIN.FAR.RUU.NL ("Bas Schulte, Spider")
Date: 6 Oct 92 00:29:01 GMT
In <0q3-4l@engin.umich.edu>, Michael F. Kamprath
<kamprath@space-grant.sprl.umich.edu> wrote:
>Whenever I send my application an open document >event from outside the
>application, it will not actually open the >document until I bring the
>application to the front. How do I get the >program to open it imediately
>while it is still in the background? I assume >this ia an easy one, but I
>just don't see it.
Hmm, your ODOC handler might do a SetFrontProcess to your app's process serial
number to do this, but I don't think it is always a good idea to bring your app
to the front when it receives an ODOC event (Apple?),
best regards,
Bas Schulte.
- ----
This is getting better and better!
from: schulte@klin.far.ruu.nl
+++++++++++++++++++++++++++
From: minow@Apple.COM (Martin Minow)
Date: 8 Oct 92 14:45:44 GMT
Organization: Apple Computer Inc., Cupertino, CA
In <0q3-4l@engin.umich.edu>, Michael F. Kamprath
<kamprath@space-grant.sprl.umich.edu> wrote:
>Whenever I send my application an open document >event from outside the
>application, it will not actually open the >document until I bring the
>application to the front. How do I get the >program to open it imediately
>while it is still in the background? I assume >this ia an easy one, but I
>just don't see it.
Make sure your application SIZE resource flags include "background NULL
events." The value 0x58E0 seems to work for me. Your initialization
sequence ought to include something like the following:
FlushEvents(everyEvent, 0);
/*
* Clean out event queue -- see Tech Note 180.
* Calling EventAvail tells Multifinder to bring
* the application to the front. It is needed
* especially if canBackground is set in the
* size resource, but harmless otherwise.
*/
for (i = 1; i <= 3; i++)
EventAvail(everyEvent, &EVENT);
Hope this helps.
Martin Minow
minow@apple.com
---------------------------
From: resnick@cogsci.uiuc.edu (Pete Resnick)
Subject: ICMP
Date: 5 Oct 92 04:02:02 GMT
Organization: University of Illinois at Urbana
sdorner@qualcomm.com (Steven Dorner) writes:
>Reporting ICMP unreachables is fine. *Acting* on them is another matter.
>A single ICMP unreachable means very little, and should be ignored.
I disagree in the case of a TCPActiveOpen. Any good program, I would
contend, should immediately give up on the first ICMP destination
unreachable on an open. If the user wishes to attempt the open again,
that is fine, but that is better than trying to second guess the user
on how long is OK to wait. Providing a user configurable timeout is
fine, but waiting for TCP to time out is not. Not that UNIX should
*ever* be taken as gospel, but as an example, most UNIX TCP programs I
know abort the open attempt immediately on an ICMP destination
unreachable.
>A series of ICMP unreachables is probably meaningful, but it's easier just to
>report the problem and let the user decide to cancel if he wants to.
Easier, yes, user friendly, I'm not convinced. My gut says that a good
program should have some set default (perhaps 5 destination
unreachables in a row) before aborting the connection and reporting to
the user some network trouble. This should of course be configurable
for power users. I find, for example, Eudora's method of reporting:
"ICMP destination unreachable. This may or may not be important."
confusing to the average uninformed user, and certainly not telling
the user when it *is* important and what to do if so (i.e. cancel,
continue).
Maybe we should move this to comp.protocols.tcpip if it continues?
pr
- --
Pete Resnick (...so what is a mojo, and why would one be rising?)
Graduate assistant - Philosophy Department, Gregory Hall, UIUC
System manager - Cognitive Science Group, Beckman Institute, UIUC
Internet: resnick@cogsci.uiuc.edu
+++++++++++++++++++++++++++
From: pirard@vm1.ulg.ac.be (Andre' Pirard)
Date: 7 Oct 92 11:54:55 GMT
Organization: Universite' de Lie`ge (Belgium)
In article <BvMr7F.1ys@news.cso.uiuc.edu> Pete Resnick,
resnick@cogsci.uiuc.edu writes:
>for power users. I find, for example, Eudora's method of reporting:
>
>"ICMP destination unreachable. This may or may not be important."
>
>confusing to the average uninformed user, and certainly not telling
>the user when it *is* important and what to do if so (i.e. cancel,
>continue).
Perfectly right ;-) Seeing the (French translated) message "An ICMP
message was receive. This ...", a paniced brave lady phoned and told me
that about any message she receives *is* important.
However, I wouldn't blame Eudora, she copes perfectly well with all the
rest.
On the more serious technical side, the other remark is true.
A program may shorten the time to *open* a connection by receipt of
ICMP(s), but it certainly must let the user decide whether to close one
that's open or to give him a chance to go to the machine room and fix the
cable instead.
- -----
Andre Pirard SEGI, Univ. de Li`ge 139.165 IP coordinator
B26 - Sart Tilman B-4000 Li`ge 1 (Belgium) +32 (41) 564932
pirard@vm1.ulg.ac.be alias PIRARD@BLIULG11.BITNET
---------------------------
From: tomh@wes.on.ca (Tom Haapanen)
Subject: CountAppFiles --- and starting a child process
Date: 7 Oct 92 00:06:24 GMT
Organization: Waterloo Engineering Software
My Mac app is progressing (thanks to those who helped me out at an earlier
stage), and my collection of Inside Mac volumes is growing. :) However,
I have run into some more roadblocks.
- I'm using CountAppFiles as described in both Inside Mac and Macintosh
Revealed. However, no matter how many files I drag to my app, or how
many data files I try to print, the second parameter gets set to 0. The
app starts up fine from double-clicking on a datafile, but there is no
filename that I could open.
My Think C 5.0 code fragment:
short iWhat, iCount;
CountAppFiles( &iWhat, &iCount );
iCount gets set to 0, and iWhat seems to get set to a random value.
What's going on? (I'm running System 7.0.1 on a IIcx.)
- I need to start up a file browser to view my output files. In another
environment I'd use spawn() or system() or WinExec(), but I can't find
anything in the manuals that'd start another app without closing the
current one. Surely there is a way to do it, right? (No, the app
won't need to run on System 6.)
Any and all help, hints, suggestions, tips and sympathy are gratefully
accepted! :)
[ \tom haapanen "i don't even know what street canada is on" -- al capone ]
[ tomh@wes.on.ca "trust the programmer" -- ansi c standard ]
[ waterloo engineering software "to thine own self be true" -- polonius ]
+++++++++++++++++++++++++++
From: chuck@gte.com (Chuck Hoffman)
Date: 8 Oct 92 13:07:46 GMT
Organization: GTE Laboratories
In article <1992Oct07.000624.14905@wes.on.ca>, tomh@wes.on.ca (Tom
Haapanen) wrote:
>
> My Mac app is progressing (thanks to those who helped me out at an earlier
> stage), and my collection of Inside Mac volumes is growing. :) However,
> I have run into some more roadblocks.
>
> - I'm using CountAppFiles as described in both Inside Mac and Macintosh
> Revealed. However, no matter how many files I drag to my app, or how
> many data files I try to print, the second parameter gets set to 0. The
> app starts up fine from double-clicking on a datafile, but there is no
> filename that I could open.
>
> My Think C 5.0 code fragment:
>
> short iWhat, iCount;
> CountAppFiles( &iWhat, &iCount );
Tom,
The following routine is from a sample application I wrote. THINK C
release 5.0 - 5.0.3. It works fine. The only difference I see is that I
defined the count as an int, instead of short. I'm making a bug fix to the
app, called "Chassis" this weekend. If you want a copy, please send me a
mailing address ("real" mail, not e-mail) and I'll send it to you for the
low, low "price" of asking you to beta test the bug fix. I'll put it out
on the net after it has been tested.
Sorry, can't help with your other question about spawning or attaching
other processes. I doubt that the Mac OS can truly do that, but there may
be some fakey way.
Chuck Hoffman
chuck@gte.com
GTE Laboratories, Waltham, Massachusetts, USA
(617) 466-2131
=====================================
I'm not sure why we're here, but I am sure that while we're here we're
supposed to help each other.
=====================================
/************************************************************************************/
/* FinderFilesProc */
/* */
/* If the program was entered by the user's selecting one or more files,
and then */
/* using "Open" from the Finder menu (or command-O, or by dragging the file
icons */
/* into the application program icon (System 7)), open each of the
files. */
/* */
/* If the program was entered by the user's selecting one or more files,
and then */
/* using "Print" from the Finder menu (or command-P), then for each file,
open it, */
/* print it, and close it. After this has been done for each file,
quit. */
/************************************************************************************/
#include "MyHeaders.h"
int FinderFilesProc ()
{
int FFRetCode = 0;
UseResFile (initResRefNum); /* for H/P printer */
appIndex = 1; /* initialize */
CountAppFiles (&appMessage, &appCount); /* How many from Finder? */
if (appCount > 0) /* if 1 or more */
{
if (appMessage == appOpen) /* if they are for "Open" */
{
for (appIndex=1; appIndex <= appCount; appIndex++) /* for each one */
{
appMenuLong = ((0x010000 * FileMenuID) + OpenItem); /* menu parm */
WorkRetCode = MenuProc (appMenuLong); /* do "open" menu item */
if (WorkRetCode != 0)
break;
ClrAppFiles (appIndex); /* remove from Finder list */
}
}
else
if (appMessage == appPrint) /* if they are for "Print" */
{
for (appIndex=1; appIndex <= appCount; appIndex++) /* for each one */
{
appMenuLong = ((0x010000 * FileMenuID) + OpenItem); /* menu parm */
WorkRetCode = MenuProc (appMenuLong); /* do "open" menu item */
if (WorkRetCode != 0)
break;
appMenuLong = ((0x010000 * FileMenuID) + PrintItem); /* menu parm */
WorkRetCode = MenuProc (appMenuLong); /* do "print" menu item */
if (WorkRetCode != 0)
break;
appMenuLong = ((0x010000 * FileMenuID) + CloseItem); /* menu parm */
WorkRetCode = MenuProc (appMenuLong); /* do "close" menu item */
ClrAppFiles (appIndex); /* remove from Finder list */
}
appMenuLong = ((0x010000 * FileMenuID) + QuitItem); /* menu parm */
WorkRetCode = MenuProc (appMenuLong); /* do "quit" menu item */
}
}
return FFRetCode;
}
---------------------------
From: chrism@col.hp.com (Chris Magnuson)
Subject: Disassembly with source in MPW?
Date: Wed, 30 Sep 1992 17:01:19 GMT
Organization: HP Colorado Springs Division
I must be overlooking something here...how do you get dissassembled output
with source code interleaved in between? I used DumpObj to get something
of the form:
00000000: 4E56 0000 LINK A6,#$0000
more assembly follows...
and the source lines are located later in the file. Is there a way to
get the source lines in the same listing as the assembly code with MPW?
Thanks,
chrism@col.hp.com
+++++++++++++++++++++++++++
From: keith@taligent.com (Keith Rollin)
Organization: Taligent
Date: Wed, 30 Sep 1992 20:45:13 GMT
In article <1992Sep30.170119.412@col.hp.com>, chrism@col.hp.com (Chris
Magnuson) wrote:
>
> I must be overlooking something here...how do you get dissassembled output
> with source code interleaved in between? I used DumpObj to get something
> of the form:
>
> 00000000: 4E56 0000 LINK A6,#$0000
> more assembly follows...
>
> and the source lines are located later in the file. Is there a way to
> get the source lines in the same listing as the assembly code with MPW?
There's a guy at Apple who wrote a tool to do this. The System 7.0 guys
used it to figure out what high-level code generated the best object code.
I'd send the tool to you, but the one I have is old and doesn't work with
MPW 3.2. Perhaps someone at Apple can make available the most recent
version, or you can try to duplicate what he did. I recall that the tool
was pretty small (10K or so) and worked from .o files created with -sym on.
- -----
Keith Rollin
Phantom Programmer
Taligent, Inc.
+++++++++++++++++++++++++++
Organization: Stanford Linear Accelerator Center
Date: Thursday, 1 Oct 1992 01:16:13 PST
From: Nobukazu Toge <TOGE@SLACVM.SLAC.STANFORD.EDU>
If you are willing to shell out $350 or so, then you can use Steve Jasik's
MacNosy and Debugger. What you do is to compile and link your MPW program with
- -sym on, start your app, then jusp into Steve's Debugger one way or the other.
You will see a source listing that the program is executing. If you click
on the window while holding down the command key, you'll get an assembly
listing with the higher-language source interlaced. You can save the listing
to a text file.
It is very much round-about and somewhat ugly, but it works.
(You can do the same with Think C projects).
If someone has written an MPW tool to show assembly + source listing,
that's certainly much nicer.
- - Nobu Toge (ex-SLAC, now-KEK)
#include <StandardDisclaimers.h>
+++++++++++++++++++++++++++
From: Manuel Veloso <veloso@husc9.harvard.edu>
Date: 1 Oct 92 09:04:07 EDT
Organization: Harvard University
In article <1992Sep30.170119.412@col.hp.com> Chris Magnuson,
chrism@col.hp.com writes:
>and the source lines are located later in the file. Is there a way to
>get the source lines in the same listing as the assembly code with MPW?
The tool's name is (was) UltraSlimFast, by Nick Kledzik. The one I've got
is dated
10-Oct-90, but I'm pretty sure that it still works. The one thing about
it is
that you can't have (or must, I'm not sure) string constants embedded
within the
function (option -b, -b2, -b3); if they are (or aren't), no listing of
the code is
generated.
Here's the file, UltraSlimFast.cpt.hqx. The author said it was acceptable
to pass
it on...
- ----------------
(This file must be converted with BinHex 4.0)
:%99XG(*K8faTE8CKFh3ZBh"d!&""3e4$8%08!!!!!$K3!!!!!+!N!3&6RJ!!0mf
!4QGSChKiD(PSDAZ+HBU+Q'PkHSTkLBGhHSZEQBbCLSKQD)L(H(TjH(ThHCTkRCf
A@BL(CTLBGhGYGhLUQSf+I(L+UBH*QTV)HjQ!VDfFV+ZEMDbEQCZjUiUGR+ZEMB#
XHBZGZTfUN!#3!)UCLDLCLTQEQUfEZCb3!*LDMCZ0S)Z,LBBJ!!%c4&CRCiQ)QTU
DQUUm`,`!`!#m!-$!!!!!!!!!c!a!)d99CQCRCRGhGhKiH)KhLBL(LCL)L)Q)Q*H
)LCQSU*LSQ*LBL*L*LCL+QBQ*QTQEUDU*V)N*QUUCZjR+UjQBZS3M!*YZ*#&i!N2
ak(Im#VfGjXZdQrqZkSrDdB(5@"hf0ePD2YX6+b1l[m6GBZdl[*bSiAGVHhq!!Nf
0#01MCMj%)ErJ61,hr*hi%5Eh@iH6XmEFhZ2Nr3l48YpA)h@9KhH-`0bFVZmV$Qp
Rp+EYm1MMj'(XFIFiDM1JB[-2%bF0@-N))+%k23k&JjZ1l8FlDm`0VGcGRYYTClV
'Tlc+fQka-0&6XF6(bF-%i3Mm)"2`3KDGJ"(I$H6DVqcBDk%EbHI+maJ4e@Hd)q0
J4,dc3MX'K(FX#0*@0#1iD%03'Nk$!LChV3Mm,!Mq6-D%H%d)qqd)mTS4qCS4b@K
(Z0#1H`)dXGS4AY#05d)eV3LkD%8@K$@!d['D%Hq`)q8diq9FY#-4S4il3Mdf"&K
Tf"%)!4(!M)!LU!Mh@"%E,B%4l"J49DjJ4S+$!L5Mb!)d1jB%9ZpB%D*(F!4+V@K
(VX#0'dJVNI!LS4F5"-)iJ#*#2!3)TY#1S`)NkpJ49Y'+[JY#2&D%HL`)Ka!)d!d
#1)3)jV3K)3!4*eE3K&J"#X"*(8E*S4`'"%G*#%#%Li!LU4f!%511`)d#3`3)43!
4*4U!)Uq+`)dAef"%)@(H%`&PHG[#&Y9fYV#Xp2N!Ke923mE0a+qE9j%rPEr)VFl
Icq4#Tp+G#9&A!TEmTd)@ZS[1kYIk,cHIG[0V3SAHc`0YFl2"+I`MVRhSeCCid+`
5NUK5TbV'VpcbED0HFHTpqhe&KQ8+8fVpcK@d!3i0[U1XR3M)*Hq`5bP%Sp#PE9B
(89$UUlrbPjPjh8h#[GYHFV`,cYZe99P!&jfp6Sh2[9F-Z&$D4DrraQcFD&EEbH8
,T'NS6jP[#(CaUIr$ME2&VVI3A1IbXfeK6YraCN8YJGN6mlIJP@qhQAfdTeA'fQ*
b,5iKAAIq82F4AGbLZ48i'f&Sac9$qUfYB9Z`(f$2F#f*S!BimbYB-@i-B-lB)iL
M0e(+rSY*d+jiLYDk496Th2[952NVGF'P#G,Vq41al*!!)[ThdYT8kH[J0*9SiEV
14#E#&pFEU6qI'UG2(q#hNS,@'B28ch%jpkklDr`0VY2VAq"IE@mZ(Y35K39Z[&*
IA#*lMA',B-3@XUpLLHmf@4jhfd[VL,h%)0B&AKM,Adr1R[K8*$clepXqefhEl2B
lDllEYEbrBU,DV)E)i+cKeH4U[-R8GmVc%VZD@mir8lUee#%&1[Ga*8l6M6k-QE9
l,-Y@33@`3&QXQeI+rSYS1c#jTT!!Hq6mL#@Nhd,+(9U1@#$QN9l#L(@1a"bC61R
hidZ"YHi,4@d[pRJ$@V'!eAA3VYmJB4KI3K@JGkE3k3V&Cl5Lc!c!3-)dUpLDc5%
RDclpNBh55P9PaUF1[RI*lY[9h1Ia[,jPVL6TZ,c0BJGE)k$A3KU+PjajHQrcc,1
R@35%ee1T@!%DZ%E)Y"q8H+YZ[,q6hD-MVl[j2G)L[c-TBAQmiGaXm$CGYfYlY0V
Gl1mRpVXdHGe8T(%D[#!U3Uiq&3Ehk&Tl2Jd,6QS#IDZFAQq#0P,!6ZER&q6iEDd
q6hD&+mmZ2fG#dkP4$$fXj"LjaDL9T+J0EG"!#1iPK&FjP,6hmkP#()8'r6f`$4[
f)'9AF43NqRFlfVjD(JjD+R'if&4l`%[1D*ARDBAbG0!bhY2NkGk6R$UV5T!!cXA
j1RREk'Kf%,R&pMI"4N6qGl'qe%Y@!ir9E,Bmlj1T6f&Mkre24*[0l9kmC$U"0"%
FL+[jhbjhbG3'Tc&4eAqLVU[SIe-EU0jAAiAbH[m[I3MG5S0*UQ,DkR8C)+4e&0,
Flf6cfRhN+I3J+b5eaR9F4ihAF[EGB3(-EMUZ1mELZm,Bmlp[JZfiNm'jaIfN21U
ZAMFIYm&"DjaIC3Dj-[88ZqZL+kP@$GHq0eiFm3MT*GRXHGl,Y*!!4)F0Lq!D0jP
eK8YEFi[-S#ZNU-Ee3j`Q81e'ZKBV3YjFI[8%!)b)SD#bl3I"lI%(T5%HPS*#2`j
[fR6l1aHi(Hbf6ce`3i[DB[Ym6fr[X3#bjFm20!L'NIRS@RYIGZGlS"9*!LZZdGj
G$pXH%%9NEf[ZSmVPEk'NC9'RmkT"DT8dUPDa&Sb'J4D0,2h5XaIG"l'03Sa,"MS
a@lpM,F[SbqDJarYlD'4(B0p5NAi$44A1pNHBaUY(aA69A6'SIG0IlIKQkMpIP[`
ahqh!kr#pV`TYTlAK""dEVbrDm+LULPMcU@VYl6fq*V)AmrBmLUplhTfajhYjdrr
qK$VlRf1qQL1Qi[XGpef,mR4K)[NC5&9[A`B@0Tl@G2$6c10#'0HXN!"[D6(!FTf
%R%IZ'4m&64kN'pVL1`j)pNMFpVL'*GjIYCepQ*8kLiM('-`0[pY82LE1Yd[EBK+
N(`K%D3V-F)"2!PJ44*J(jUr2%edH8p*VlLbeF)2[!Sl4qR)GILqeRFhJ2'bkqGc
FYph"+M2!Ic#,+4T+8XK*P@0TmR2mcb)52r2cmq0mZGcH#M!&K,mL$NfdjZAaXl%
V94fE(i@Lh!"D%2Z$VXe4+ARHAcH"fNlj1R&Z4!CY'qeK)-PckK3RmlfZ*AfmZ
&e3hHYb0#JTX"h9Ejfak8HmYZZf(A*dkJ3q$@I+plDhmrcCq0,eNIr6Dl+IkReG"
f8Z0@Q&KlIqAEqIQ4SjNM$3CYq6'*0F6*F5+Y4JST#!`Z1$5f5,kPUAhLNIH2D+j
IQ-U+hH)4r[*e%XcL'&DDVScb4qF&SC`NKm8,IIaiI*m6rPNRmbC0VHGeRh8+AF'
0&D9)f9EqE2qU4C8VTj+Kr(-GbSG(X(jG!r5QLr!f`Cl+@$(8lKL@8+6E'ALPTL(
4q"SGiEPT`GTpUMC)C1VSc(4Ef&Uq&jHFHVmJ"2+[0iQ,jiADpYHA'c6&qfe#kK$
bZbQlV*Qif2P6HlQl,HBY2EEI[CZ24!fLGQ+EZ-I&TJ4ZCTV2Gj0[jqbfFh*qcLl
I(a-Qe-b*1e1RD*Ql,$a-VZqcQf6!lE8D16KjACf@N9"SQk12[-EFpR0XBeM*38q
PB`Phq2[-MFBGqQXaLiH0PGR$UYMMif8"@5,p%"@GVMlRH+@9E!VXfjIeKGHAk[2
Sllkh$YYGXGYXYRFi[UrKmRqQc`TXUPhREF2bH*fh$YTANrMYp3A4X'IcSDUaaHA
AI0ZB5V5lUG-0*9jap$P6G4pE-b*&jakVTDZ%9Q'(&QQF*0[CYTk[2rcc,HhV*&c
RfX*ZMe-lQISZXfP([2%[KDFJ"-Ee!Zrq,[iV$2UI#N$[Zi@&XDH*[-RDifkbR-k
#-V48ZjHQLraDd9bqc4De'@H-&IKdkBD5q@'4-1Q#c+R24J[!h19Mj'6KB@dqZjI
NrPX0AD`X#55K0(H6Ib'D9'Z[1UY,5eH4'j)%8E+Ehe9TC@GfYlFGV4X%$,SVP8U
j!UEhN!#4GAY+1PdVeHK5h-rRF[dGMdG$,TeFhf%kA&[l##9MLqVe,(KAA"SbTS&
@aP)51IJm1kr*#95V$1kP8idh-!k@SG,QqAk[8!k[81Vj[PmZ1C[hB8ib++)e*A&
aEfRUp(MAY+9EDilY43C'lR"iFrRHVdE%),(G3N%BbYeei@F[6Z'`(4r9k6d(5I9
kMd(9[,MhA"TD[8M845VEUaUUr"iIl1Q1Qm5Mcp6LmZ1`@UZSl&REL"ZZNr`iKdr
,b)6D@0pEKdqq6Xf5I4kr#jGK4(%GqVL)F6"iEK9Cpj!!QjF2Vk#E9f--rT`X,QI
b9"U"V+%9eKBeGP'85SHJS03SHT`*r2X)E(S9N!#RS'4#AfEqE0a[chR(kI2C&-5
'HP8pp*!!c0`Vl!FQ+1Z)9V+P62*!%CC1aPHEclQ(hb$l0,64**!!A([`m++9GH*
5N6Eqmc[fG-Q'"Em[kX2iEVbqATk9D"fRki[R3VVVbr@Md8%+kEHhQG&A8ieXCRR
,q!LUZlhKkNT!1-*Xe8V&*FFlQFJK*SLZ9iD`Nd[ph1jRRBIa1'(JB@&Z-6$l['h
LDLJC&26@0Tk9L%'GKB@kaMJ!a-6BZ%kP$&CZ-GLXQfd*&ME$USpP$d22Qd,+-3#
clQGbFrPcdJ0q[NcDbbe&j[!NN!!@'Ra#ZQaRBKFqp*KUSGl(f@CUi`$Em)02GGq
JKrpF&"!er)RKGVB)SVUK4drBQJGFcU8M-mrX)A0#hUN#,'1JT&Bf5ML-"UBf4$[
ZUjI!rAQHT[q0p[&NChflk0p6dUR2%aTa-B8hkYcb[EkG1&jqY&"4MP!@2#4GJTH
IVC8@US&4DX)P+fM@6qGkh6kqjjD4'9Y!R!bid8Mpr"[XfR'cq$5rM6*4[h,Y-G6
6B2$ZrLKRe1LVlXRG8X,Fd6($4ph'rY+8aC%KM@eY!XV3kH$YL`"kFriURTV(K-q
MM3VSD@KC`d`)5iDIaY&X)64K1-Nk9DGViUF3k1$YVI8)DAR5KEJK0IT#H0S3LVK
@*$c1&C[0K#fXi6!1me%*FQ`FBF3k`Gi(RjIL'JfpXKGYm(E#Z4T-("fb$PLPD5%
Z`ZCd[V&TT9bdjT(ipG&,mEA&)j3lapG&(iZZ&-[hd3[(5'f5,"-E#jc',C(S8Y9
0R@0c,kbPeXc56-qA'Sp(a24Qk'rR5NVQe-H58(!4,c%,'Q8bE1''Pa5*I[`M&0V
T8*E"iM5)[VR[K4B[-l%"0B!PVED%c-1kfhm)9l*pZT@i1fZXbLG3L&IHEa(T82k
LSYY&"Tb2+krI3KeI#jRQd,6QIfJ*q4+Q(-mK3EmDJhi&"P[QFca&$1-S0rb@KVj
fe[0VJA1cRhT6)KE4VHfK,mrq%+l@%H(q(m)6192ZCe#F"dcNJYbYrE6S5l(86G4
EI9K)`H'b)`fYL1JMbPBXN!!DXaj*M`@(pG5DE5&YK3V,d+,Zq-G(Bh2dp,Giq05
QhhGie,$Ql([-2FEZE2fq2NC6+T%"p4ZCFBLq9#9l%)RFk0ekqZ"!@&rPC'kIZJV
RhZMlNrq%,+hPd,h@3prDpK'[U(BarrhkGMY[aIi@@feZZK-l$f,rC8HP0ZU(FAp
#MdVIr#K3-hVUSh*Yq"Grj9C8i1TKlh2ca#6EH`j@IBh1Xkce22l'(Q6X52f-Epr
diT(B6HrlZrf2Hp(1RdTH,+p5GqqjrPQhml'k88Ie-rq9+CQRqE@@feKBAIq99e9
VKAQmZIHpcRJY0-ZD`)l,+K3VqXcU'*)S6iTYr3XVR8lA@4rqfLlIrmUG1P@hh#*
(2L"U6BeRKrf`Ql#I$8hIqA99C#L5F%b)c2f2m)@%hke[eQ2f-UG#TM@qXkc(eFU
H"@T[jpMp4%pa*r%RBYKkRRbmqrR5eYN$'9Da#**e,LjpclfIRj%D+5J43RM2)c9
H0&,rqDcY``Sb+fI#0U*m00EBj83dSJ+T'!+hfSmDlYFbmrp+F,E3r4cimfm-#D,
q+$(p2@f[#[1P8q!$-,aY3"AZ+&GGDjRHbD(rX#(+!6p+&3,63-ce0V&6Ec9,2QJ
9j5KAcR4YiS#F4*E&',@aRJK`E(#PL'Sb2'K&(r($AjPjqYd*4J5M2BP@!P@2BP@
JP@[BP-"+BJNjA8+jeC!!X2'M(,0@Ti[-$KhR+qTjm8HpmplVl63SPMrLY0ehe#0
c[)DZKj%,@kM#8Ma4r'UK!6%(V(b$K+lUa`[EkBN%8h'%*aK#9bf1T6,(3J02idT
$5Ilm*SF9P1AieUrdFE%0&iMJd3QmE4SLRXqFFj+KB+i$6q0-#3k@&MKGc`hb4H0
B)1)``hbX-qa*A3X&+Y@U-YI'f3B5d+#TBkJjaDq+2ipHp3ZNdkcLa45+GCim6b)
6Lk%+0#f)6dNch%m[QT)3@RdkRYpY`lR'UHP6KU%mlAMkr8DhmP6pk1XQrNUG2k9
a#[A1QAbc$V*9jbXfj1,RYpYGVeDZ$ED)4&Cp)4P6m0S*DTqB5Ri+&V8mC8a`@TM
krdX+%`alZ!e%9U)MCE-r0RCTI#NFU00,9([91I3Z*r5M9eMB'kpRkU`Sb09Sr&h
qTfD8hVE4@dEZi3r1P'9[BDq`1fTi[I3X,#aN4id1UV*#CrhlTmb`V0r$48T(lYr
- -X-U-#eA5dYIB9R!!LZrG38+VJHi&IBEic`SEHXlq(9!KhqQX0MrVJ`XYU'@JTDE
9Q,a$D&6b25NiYCqh`iV,pYp&0rE-LdmVIQ'&V-1@@P)hM@TZIHIk[Ra5CRVr8+d
`H5D8M8k2QH'9@U*@HUAQmhX)T(l[[DD`qTkG6TAQmbS65QeBi9+ceQKMci99+XQ
FQrc+2aa@&M$hI!T5E(NhqrSp)Xl988HCb8V3AR+2JGV"mQJ`)3Pr3KkGRml#69a
h@i`M9XbFV)hQi0,[#f@'k#lh(h4f"-M*#hS[qLf0'qK'PkD0UVqj5)qT8jHV!6X
%q5Y@"1YLM@m8EX)Sdl44l[FiIeqch!MXI%`p&(`AX1h,d(5lQ2pIDAreMdZ4Z1!
R*!6p)#HS!R0f1f6miBm`"0-!PL!QU!6@"H1QMI[!6i!%q-"1N!!`9,pl&(biSr!
LMm'+2i-8I`iSrhiSrLa4ra'1p&(mU+2q5+2jN8Imd8IMhXk2m4&*h#!MJ3q4"rN
JLMr(&(rM&(-,[U498H+UNa99E&99d99-LUY,&9DD+Ukf+UXBUV8a9@UPd+UhU9"
V1!J)i%2N3Ij))UV@49ABa9ACa9@[LUU%99Y)UUkLUVb+U[SUVYiMdZ9AG49@hLU
U-99hX99M#fb2UphNBaLfpG06k8*LlC@20bZm6m-PL$QlV'Qph6TiQkh")'#DE-Y
jYX#ENlbR61NPKlRVY(,qV9HG2a-2)bZZQhf(hHj4#8FM(aArL'QcIVBqmQi[GrC
QjAfDH'ICr%arXGRSp&)P[8KpC)l"!l'hQ*LD'4Vd#mR+&I@b,PSCMlc+VC'!d0`
mM)M5-3"-El%H46qaeqbNC95Tc0TXT(I!2G5p*)riaJ*p3"0[#YJJCh88M-LNIFL
NH&HemML%QY!",ST!9XHqLNIJLNIM"Mb(3a#2i+IjLJjrC&)id8McYP)q#T82%pE
D#-QfVr*(AEFkZK#15)aY0mkIr0ZS3V[(M@CJU,m@P`"UbR8Y*aXi*U%FHUXY61Q
k+M)Te)YFG6+9ICRBjP$G`0JMjmk%Lfd9chfjKE5JXk*ZPH&D`T5D&q&NZkrVK)S
bIRJ`AfV8ae%`-PfQ[ZBp2$aQkPJXTCe9+c%Q'0&$)dUD6NRXDG5piF8kj'+[12(
r'M!B2$9JY@GTVGL3!1m"V12h-[lV0`H(5VlIVi4dp[LI-,3G&6iD#lq+Xc'GH$[
paLBq6KZ,+U@h8Ap(dZY"b&2)QVV925kZc6#[k,#c3U@CbPRBI2fN*AclZ%Ydc8T
'DI6,EG5k60NjhpF*5lNblFRh-JQKG2-Ifc9LmCU0R2E04h`c8Mq,q'DP[`c8MdA
jCV[rX&(k[dC`1$,*IqV-5[GXY)m*6b%2LBc%1LeQ*)c%)H[0Nb#r*4MEZ[,pKD$
aTA+c,IY+b6HIlMXqc6X8@dPdceHM2&m58(d%Z%2E6-H!HH408*VfQ1Z*VJDlfR8
cJDGcF3a,1G0P12NDd'#0"Gf2dkFKQeJL'ZHqSaRd`NZPTD'!mB#UiUUCbN8hKNl
rGBqibM@fFiANRmZXAPc+*VI4Y9EfR,QA1IN9pjjF,keKIjYea-@40Vbm98cZ*qI
- -H3)UYP6JVR[E#5e0Ib[QerqI#XBIjm,PEqijpC!!ZVmrMM2GZdUJme-j6,bN,N5
6``LV,UrTDBlU9HU-Uh"bH$RjIeERplpaDmBf(+j"%jk)lDdjGH+V6T!!5[H'f@#
`4I4r[UeeZ[%`k3`Z+q6L`p(Pc1["J8#+64Ch#Bm#cc*ZLGm6AJi9,$bYVYVe08*
cF12hS$`eQ[449#Qi[AcZAATZeA[$TA5EYKX+DG'@Tki)2,Kad89abSTSkb`IL-T
*6((L'I"CMT1A&CU9B[VDDmirqlGkMeY5"Kh@&$0BDjAm3kX*r1MC$Gfk3q1kij[
3IH0hrG)iI+l[EiMZXmHr*h(aUiAr"bi49U5LIlbm(KhfEb-h%q-mPh31l&jF+$[
E%qkEf@4KlAE2@r&9jF,FeQT%kT`Mk(9NLFGcL%23!Lf!MRVp+Z#S0j!!S0rb8'r
X8'iUJhS+$H8S0jUI95(MU'F43E`3'[3%`9$[`J0I+&H+!ef!Qq$+Q"&Z!Ni"%qd
5"#$PH!NXBVVU91,'bkq,[FZZLSjHRLfqAT)Zkbj-AF!TfqAU)Vl,PaAQA(LZX[3
aE6,N48-[34Dr,P4GQ%RBK*V!)YF[64DV,dX@Tbp(&BjIc)ZY#c6CIbSY+$N`3&G
PpE&@Jj*!L2PNh9U8aQH',&lZRYVmZXZ2bepV#Zl5ipEAdC+Eb%9CFrS5(A8mcVj
hV6R$E0`Yi'@1TT8k0Y9QM&,UG&G'K+[R4*5'lMAqmLeJL+259(Te"!G"DQf*NiH
(ZhaCDbi*CFT66e0)GHA$aEA8IRi12,31YT))F9@3!,`)%$["Y-+TdqfiH[mk202
Uj),'(B+J0+TJ,!EBT404RKkQijRa91RCl6f!'LMd2PrhrUfr5I&FVKi@&5b-Il#
Fdf!mQ1UdCk@Q%X8K,"D3!*XLN!#@#FU42j@TLc8TC2-SN6cGpqAp@hq#eedk%*-
5-GAPU+8P#MPTl%+&+R[SAIPr9Z2E9YUjJGYj+kNAhCU(d-r0Sb*YA&e[CeH*)*`
Ub2QrpcPdSE1jrqlE3,%THTJ*$J[FBi,KB9(ZpaZ-2*b9UT*"UV@iGUReaZCF0AS
)Y,6PmE0aT925T'dZ&GRAfEqrJVadHk9eT`AFLijjaT(iP8i@pQD#@Jj1C4V+G8P
K++4DAp6Trhp0-NG%e$Z06`SVP4#USSj#YQk$DCRRRM#LeLLfJSfD#hh35Taq0hp
%qGLTL@U@q-mj'J6MN`6(ke2K0LFpaRSmi*ihXEZbh1kL8I`j5Z9bLBH&"diciAp
1-T*ke%,Uqc[dVr)`A8ra!EL*&3lJehq4hHkHA[V8Q`6$U2@YAVJ&H9UF)bSUkKL
qYVkFTB)3L`$h)HA$J@e@RZBrrrGeCP5!K[EVJTFHa+e26Y$c!SeFfrQm'E9hfCN
4r-)mXL4&(b)F$-QhrdCjqXeqE09G0[kF1ZR%M5@`Qilh#`NbaGTY60jDc(c8MZV
LS"@DR!Qk+Ph*+e@dQ-T,4P#1,QcEqhUqiRCjdj'YGSfM@IE(*XY[DCG!a5V,Hdp
EAh1HBZ&TkdiZHH0+Z#1M[%FC9@%85*bMTlUiSbP3fK9$Ee3cUe$-DhUm1c1$#2Y
l(P6VIY$kT*NC9Kh2+rI3LVY@FQ98F##"%D16a&UBKjibA[M$ZYe44il[@R6Eq2h
P6i8H9V+ZqRj81`M$&4h6k1"pXFCCrG(XHJN9MVC'2hefelXlaalN&afNH`pYP1H
+JjkU`pqeqR[dk(MNa&FA$,p-qT2BSFp&r6V&IdG2*NAPRQ#iJQ&mRMX&TXE[EAq
cGD$$,ah%SelYCI-18k%SKKq"fZKPVr)NmN65E,9'XD5C3X*D,!kb",K&Z@Y&VdQ
UQhpbCTc@Xa,8p6('c8QdT6(DBDL#@#!@3P+KZYG182GPHCeeQ'FG)TRK%T`qBA(
PaiLe)MN1r`X,ClED1h(&,DX@b4a(Z!RHh@EL-%2Q+)G`q(0+fLp5UfUf0KrYk50
9&-*fRE'(9D[5%4(B$JlTCT+9FRpV8iE!SNMm"1E"M26F)mM(+i1&KAqcfIdhHQ3
j$"icemrCMV")"C!!HRCV)DjPTJXT9"TRYP,8kP$U)L2IjYTF2KmRJAYhY0VGl1p
fah1ApX0JZf'CpD+PjDkLfUbj4*Qi%fp4K[pHDid#k)6fr,Sq+r6mRM'F+pZpMIG
YHE'j(T-U#E!"S5)T)%8%rA`TJpE'r!6`1fUPT`d&@k4GGA4V&`Z0,&L*pdbDA'j
KZl"IC*(aTEeTF(Y`KUfPNii3%rELq66`9Y%RFlhATR36'9P&%Y[VeK)9FNaE%Y#
9HCb%a*R("*R+8FRD6hV%#m'jplUR105XhVF!#hkZjcpA$YZ'ZD0M91S!R51K$@(
rV[`R&!Hc``h[(b+VNm'rhrFm-F!R#d1!p6IkcY,!F",5Z-HB**hURr@+Z!L1"%N
#+UTre6fP5i&[D63aURM45IT#LUH-5!F'P-AMkm&H2VbiFhAkL+@pLA*eqS(2@D)
,3##4r'JK4X(XNr6PmV9)rM5B($ZId8r@ifE4Z8-)b,,A[C9kQYe&(92iA&Hq9a&
(emJAN!#(!9hhSMHHZ"(TMIH08p3"Z,8jDQR)b)DL-2Ze4VCF(!iG,VEIA#maURZ
8A`P2djFE!iF@X4R)k-iD1L3@B5-3N!$pq[e&*m2#r6JF1kZ+4ISYk[93m&BhZb,
9KU'Gr5N*YCAAIM5FSZE9c,QhccQLSk9m)6HbKG*UVEY-$Mk)hN)l!bhj%)b-P04
NXVkh$PekI#5qc&4RJX*1Z`S9V!SS+-1+fkpFX$c(l+6@,e&JU00DYHdCah5mkKT
P-6",0#6fh$f&V8iY10X&Ur%#,(!5SFG+DES&V[FqTN-ci+16YPldERHL5N&3Z')
br[EUpaZklEKX$YJC"JJ[J)(59IGVVIA$SVqPf$d40BBDU5lE3B$XhJG$`aMQZ`E
44(Tk&hZ#'A"Nl&Qi1jVi+c&TZdd1(M)*q!!LTBL[MeqS*U[B*USp#i%Y-6U0IcQ
e3J4q[qZ"miNECdX0!U`@SJMaNmAci9aG%[k9Nm9e11lJJ2'V%5&2jN9"rXc(5eq
SIpXBM[%mCc(H,P$-XG0X98BEZDYLU6M@$eBUdd205UH!RS`jUm1QP*R2J0#DA0P
lZbECFdldC*HLPlk0&-he9&AEk2&@ZMEcDG9aZ#Cl3H%cNLM)SA%@TH1Hf#D2dXM
- -0CKlH9hadRZ$5L3HT`QjM`d38-BT$,6&*6A-'Vkp%jEYA6C*$fV5pCj"q00a%8C
1d%Qm)(da+re*m3!dT!$2G`!fV1p@f-jHQP,FZP(3)L+5Ac)ZXaGd"RI%q*k)T6l
%9BYCETTiQR4)[B!Hb5-T*C[4*B[SNMXkk4SPEk9q4-2JaER-3l[EIA&T$!P6LdF
`8dNAEV[aHA'le[JZB-D',AfpIRhjEmR8kV2`102DK0(&UAilVhd!+K)!DX+5biM
bjCcF3c*qbma$)(4)b"'6pPh6%F&Xd&R*kNh#PQDkq%T+5LmXaG)FlZL)*j5+8ZP
[9)M8V-Y'aZYHTPT-#dYUFa20J4,*%d4[2%Nb0`pTmRcSh[QKDlMM@lkIaldp,l0
(TYe9fZPi*ciELRpPe3R#`3XXrThhKAAb`Xd@Gi6QHq`Xa'qI9RKV-`pGGGa344p
,l0rQiMREAE[dm(&`m9a592F9eTTpl!N")`rK!6h!%phbI[)$8qRX$,VmMb3-q,b
2`8kT3lrQSe,8-ibMArZ1jpP-`8k)H9iGcYE[Di'cf@eRhHfZ+(EB'"YMVD)V2M6
(pf[1rC1ZFApR5YYG$`Be!"[a4X[b2kJ5q1R++qYCX)f`edErR6eBR%&[J8@Y@Lh
fN!"C0K'8HZ'&5%V'V9f(c-,LN@qqK8QeQ[J[prTf(CAeM'6XD[e%mAZBPNe[D9A
P*M8c9jj%+T[C*McErZH&XHGqcT6IBQqa0[p*[LBNl-S%4iG8S4YNkcS%I6KT*r1
MeYMIR#,-QhpMIl(ra$5pc`V(el(ecY0fF1Y8'e%fr%Y0Qhjh2l)6(aZNa@3eDC6
r8"c56S@KFc65jYEcMr*lE@-'D$E+$Ei(Sfh`%A%2Y*ZqSk)X+M)"ePL-KfHZMH4
VYG$bYIDHVU[aB[UkR@fRUfIi-AeE+hUmlCh1I[qR#2p+G8k&[S19M91J"A4Yj'G
Y&'*!(I(Eb3Bq-#[iTPGq3Ba,FX[idU`kL-Q+qQL5"5jR[NrDXm+E+6M4ABVXVD9
j2mJ#DKc-"mRqF`(`)Sr%#hfcGlkANC+p)[QT-"i@balh)2ND[[1@4VUHkXMAaG6
S6qGqclQajHXpFFK!$1$DA*5DIr5ADh3%JhS6C#HB10a(VCEC)0k$rq3Crl)-RKl
ir6X'b%!Fj)9r[bfXK`91["Hj#TF2$91H)S0a0F4pDmMkl-Mkm9kMkeQJm2DA2Rr
E52UIe2p0C*p6'kRqJ&I"V*(Kh#M%J$[GeP@$(ZJ9lpcMG6iAFIA8peqSqV6#kR2
Ec)T[`rFYVAUFmMq3!"R*!1Nf3$T%J!-8j'`3@k)#G")T2*qm1Xk")eR8i5cFYZF
3c4@dNKhRB-U!5krPH33XR5q4$4Z#9pQIcq4!a-a@%U`f'5fh(cqTk5qHrCBkB1M
C@AH$bla+IfHfZRhNA5qa&C[Y8pDVEmFkFTZ*UE"lQ#ri*k&hj`bpaM[--YLqZYE
@IkdTGcLqVq$b-B$2MT52*QH4e"L12mKEh`H'iPXd2RcKj[k21PaRKiLkIhL"ak8
Zrc+9HJCSrN1NkI)X`m5i(&@DP,,e4jF0h'1k`qp*VSpJI$cYbfZci%,`'8**HBd
afd0,HFI46EV-E[m@$GrMTQc9F8T-HiUIppp'YNb)UhB(,e'm&qr!0kDq"5%2mG6
J'6-FAR-l1E@49km$L"fZ!k5"'[QeLGk41hj9qbC$R`TcJ*eUShK[5qblU64kdT!
!XGPm)VchrA(aZ%"YeTeeN9D"Ref"J@DmF9fIE*k)$A!@DIRL5Mh@&4XV6IB'c`F
#Tcl6IGVHhmfTd(d69Z!E4"I'q%b2Vrk+EV9F[%BY`Pe`DB,[JdEN$AkjU((V5UZ
cIq-QkY8@63'm0b)R`-,ElbLf8jcCHBJ%lPeQRFbP8Y5jYP,i!Z)[J56N-PC%Y13
`MKfjhbZkQhiB5,IA3c-r%K-TDBqka!LBj1bQ'MSlP+$ErL(mh9dh%K)[[l%[05j
F9BJp9eq$`cJ8U(Af6IFP%E"k-+lcNrIChXiCU0SqGq*FJpM"A@ELVlV$KHKV$r)
*UHY+k+c)STASj&6c%c2T5deqYGlN#XpqP`d6h"1qr`Nf)Y,pIepG,C+Z0eR2HlK
hL#PRHcF$8M%6F!r)K(l-)QFQ@d(VEYlHX86bYBVe[%Z[%(V'DpI(k10HX$fJkL[
@dI'c5K@@TpbhaiF,l#ZeMq6U3pFM-9`c$*m'-a#033@I602IQ-MGDr$1D,lk-ip
H6!bLGVlki"YEV#R3cbZ6qIC`5k2&D[jF0VA6KTE($8Db`r4rHIr-BIT0FYTN5Pp
`[bqP4PpT[URX1,*,B+P'hIT152CG*`p'LTcXAmPR'IH"bZHX9N'd55j5YSaLTXV
1i5"8[-@B$lMcceF%KYIi&mlqjL`1-qY5[d'8Tma!3j!!JYUEeNd43"(IYrScm&[
Ui6+`56iRdVDpm4"4@5d!6(+!$$pQdc+3!%R`Tc8r-bVlLpiGrFBhVU8D8Tf5IFi
6SZc-L%b"lSLdbJ`JFReFUp6BP%e1DY258mL!Fr6aR*ppc#qVKE&l`Zc4AefM-0d
mYh(kR3C@DC-ap9kQBM@$AZ2UCaHfaA)pbd(Z*N3[hHpk#G'a@fBq+[G2L@p$@,M
AZhbA9aMDj)ZNMiem'Iqb[mkkcXA5S&@)U,if$*MMqUj%-arNRV8IjFrSF2Z0Qi[
*3-Z'dY0VcbZeV(53!+pl5(L"PeF4rc`4`&)N0"kGl`cic4MrIAkA00ph+*p9lP%
@XT@[Y@8TS+15GA4$#Mfiq,5)q)rDL-FC4la1-HfiTD2i`')h)`H(eTC36cI5mff
PA1DcqhY$h4jEPR@KC*JV%3%YF+"[UZ68T-*lYVfII$5NC(3ELa9LeL*C@)5f4AF
VlTFXk%h!@-$SRP5kCRRXlGAPD[8,$lSUqkBJ8iqiD$549SqcSM4DCc"kT9QPr4r
Gm96SBIk9$UfEJ-jKSZ`&FchK5PhN$rTdELRRX6rqE!HHPap6HHkk`3QAZRec0([
qr1QbNZf"[8emM[#6$E8VdeqNf#!%V!8Pc+q4'KhCHPM3dP+6rj4U@RLXBEXa9TN
4CqE-NQ34[8Q3!!DMJdL@XUIAmE9`M8Ukk3'Ve$Sp'9(hG6TP-(G`c$4K6i60`X1
$4h+I#GklFD3f,VQr5R!h2Aj8$192`LPV6dB+FLkrX*)PMfKk'$`ejD%(VHijh-j
%9N##i-NUG'MPjSMkMq%Pa)aRPl`a09TIlZGc21`rfI3a$VIMG*A8b*!![5S2ji8
3PPdc9TRfJB[c)MAeRQ*,iMY(fQ!e4'0a+0J09,K-GBcPG(a$NNQ453BQTY5@HC6
U1pR8i`YeL%9lPAaRKd-96Xp@C5'[-TbR)@eeA*%SZh9@$[2(ZJ1SRp#))C%lNS4
9RCEikZJa#5D'k99$EGHeYYZ[I)PBYCf5FZ8Z+6f@qN(V(Z[kb!@#RAP#SGBQ9)[
jC@p2FmB8@jXj@l3Sh"[630A`d0Gcf8k%Ypc*%95V#0kX9eLEh#HQB*18$5bX)1$
kPlmamQ0BM1*j%R'F$D0#%cVpTkdlY,MeYH[KDErdLMZXEFUq9YSaBiNK*pYEJ8L
ESST6U0$hhR9p3kh@26GcP,#$,U,1&8Lh,L%T(1d0Fj)!D*+eE1i@RBlJ4G*rXl%
%"6MVd#9M)R'rNTiE)N%S5AI-9f8fVGrP"`D1iHVjlQD&P`'1eQe4bMQB9A,r!AX
Vrcb2Pa[A(1IhSjch,T-[#%9i0jG-[#854E8jJ+GQMC4YpJm0NQ4m4'AT&MQ+chA
`NFB#Y[klA969G9869*H8cU1*[-R['Ed284q(@fX%a2*91qC3G#K4el8C+h2eh-I
DAQbUZ'M6ai5kXQJrHVrZHfM"P2$dfMRq025Y48QMf2c,LT86%J*Y+Me)Th'4'EQ
q1*,1*9%S!AljDFE)Q*5dAk(GDVS,#a'8ma+5%Ukm5M@C'b@G3FjGCP)i6dBiqf!
)+l3[I!PHTNpB2$aCEY`bUik&N!!K-46UG)aUR`r"+Pc)e2iYU"BQ5fS%lM8Xb2b
e'5r&iAclYDcL),C0PF5Xi6YDR-6b"C`Z,Va-54N&$eMeIQCQ1bAVdm(Kh@EMf*m
d%b2R*J1iEd#9VTjch&p`X,[R'0HGZqBf'%HPTbPK`'6k"jfp2q#"Q4(i%lXTm*K
!L3B#![[pmSZ50N`SfY2C+C(QLIm0YB%[cUMl0`[XC'9Z1m0)Pj4i2@PIL3qcF5X
*iT5IepqIa-52UFejcN$K-Rl10Z(8p9Y,XcN0e6EraK'I`-#3!)+,Na3Kq'R(ihh
- -IEV)9h,C`-#ek[9k#kqj4QZG-!d2NJ3Hib0[E'Vm2-pRIVp0)rLjUfVN0*T$66r
Ri1,B$T+a(5FEJidVfJ)rk&l!Pki$K95EB3'+-&kfN@fJHSTYlUbVTU9T!48()C8
YDMiZQQ)dU#+M5dqK"I*#Ba(2ZL%3KK-F&BX&MXV1K8pp(bGr4b9eC@2JqDX(%L5
4+1RY9NhUpPQ@TPV1Q'XFZ$DV'R9pfPDqkZ@Di%Pr566[`r69`aBrXjXf5-*k$,6
AIdFV$a$fBZ4`*Mc,9XCV-9)YDDRb+ah@q5$6*@+dTd58Sf9C9eq"58b*HEIH)pf
G0jM8X2+h#GhmY[`fh%&H!N2a`QIiFZArSBbqRK[B3f1ff@c2@,@Qhl8QT[Dc16j
`1%mdI`S616Z6)Id%f'Qk)'BN+Si")DMdJ-6M5VjX,Aki'8cl(DDE$XI`!ChJM,+
E$k@"#Cjr`b1el[GBeAmkIr0YFEGC8RDhQ"XlcYp"IcpPXqhd0r2f1f[,rEAHcd&
rJE,DlB!!!)!eCP"JGQG`"i"f#!!(!("`F!GSKi!'J!"`J!!!!)"hF!J!#(L!8(D
!9BGh!(!!"`!'KJ!)"J"hGQD)C`!!#!!!H(F!!(!(J!#!!!!!"i!!!!#(#!!!!)!
!F!F!!(!!!!KJ!!!!!!D!!(!(!!!!!!J!J!!!!!!(#!#!!!!!!!!!"`N!!6-!3%!
!3%!#%M1)N3*`!9!QY0Jcr&MQ`@2(b6B22TGXf$fH6SSrXqACQ[rE`p8eq[k2GHi
F1KYlf(i@pRHZlq[Eq1'N1GVdlQeDRfG"SU52Rabm3&c2[cmIG%C[k+Mmcr@Y&bI
TbSjU02-NbD-8X@D-95,P',kD1-AHrea9YAZ#hF[4f4BNl+98+ekN5aU!rq8Y9JM
mFY6LL*Gd#A8UeX-pkB+q"hLMbqUA,rCpmi'3!'UpS-V8rphpiXb+Ir"%4X4j[Pe
J!!"#!!#DLDDDTSUTS+UUS!S!S%!*N!!(CiKRH'GhCRL*H!L3!!9hCAL@QAGRH@C
SL+N*#3F&Gf4RGCK@C@T99SHBQ3N!#)!4!!)M4%9@CfGhJ(KT"j!!!!#!)#-d48C
Q9PGRKhKRDBH(LBQCKk#TN!!!N!!!!!S!!!!!!!Ve8@96CD*p2,0AC#HZ%fU(2dq
b("ZhS@8dd3XlTV)DGQVYM@!b-+GPQ[CC#R4$$XdkqMVr1hC6$A96RfGNB63e6J(
SRVXReGT*DkGP4'G@H%eGFH[64li9cji`ke"'lEa@3lkD[EA$[RXlSGG)"HQD[XQ
S3ej&S+Z&c60lqZ-)qk1U(*ir(YlX)@bHKkE+ik0P%0&08+)c9DL[1kR[4i'$HbR
6VRSM9A$YMUM90C%#BAJ36U31qC%ERKRf9P!j`XU+GHQ1T)fVppGNG-2+N`3Ye
45158P*L&2e%bD%%9&B8bR004A5jGHZ01ZL0[mpJA,6h-bkHX6,40UlGNhE'kNMc
f3lSdDa-[F)rpp1b%e8B6kS@qHEXVkpRDB-KEc)S5A%Mljk+)DSL$`kPb)Udf@6$
+'rTkkD+i8kJHh*!!&NpJK#DJ,iQeCHU&9%qSUh45+0KZ!i"TGe8qkDUX!pR[eLR
`@GFE,)e*NNN@88dM*FjT93Rd)dl0P3dJ8mff$SdEZfc)`Cp"PG`SQZR6'(rpNic
FZ`kaTTTT%e,XjC1"d43V2ZLIfR6hXlTUY+-$25'Rh6HiL`Zled#X``dTC9dNUiV
$A3%20f98eeM@LLbF8V$3*VVhEGZhQ"PSTSSTlc6bX34r5E558-Y0*QVDQUNHeDb
&-@F9ZhDAUPbddlZYrV"@l5q5+LEGTKpC#Fkq8eTeHT`0U+0PHK(H('!-*3ZS@DR
l*`ZC0CD#YTl$G+(I95-$KkpFHbB`"L%[8l1hZXYTCIC4R!fZq"-PC!TDS%1L-4U
09%881Ii[X4@R83iF`KbV%qlQ1IXpX2ZSMRr@Iffpkp$Sl,)I9H!cm2Mh@lF2KmG
UebG'2,Q)AFY@Y+1E&KYHLe[ErQmpVpP[IRMUf3rGK,bLQ`5)5r858L,b55jjl&N
R"H*)4di4&9C*I3dZ21`EjKD*4qY&,'[A*NB4qmShLY5C-NRi3r&L0hGeCjq8
1MP4BIB-e+)U3!!J,dj1MNP`qV*,$Mf6dCb59U(`RV5Nr2a@X@20,kCFLKVMPp1,
(DYh[KmINiS3jX@2lJ,I,*`hISqRPjH@8"YZhH[AVi(HISpFZlc!5rKKmYhFZ5HA
E!Ci52F,"lf%HqMkEelcAVZ(bNpYF[4NK2$Lp%'36$0d3A"F-236q3(r(NNhFS-I
!$h!9[mpT'f5$NH%q&lK[)3VQ[mCrb+Jp-E#(A*p[cNeP"VPpA'KTi'0-R"K$Hhc
&XXJ$rimriHV(LcH-aIIZ5B0Zl*HJ2A)%TKH6,c-3HqT!Ie)hjPY2R58IN`h[**H
DP6q4)LpH6Qb)3H"Jemj'LfRL$h0M0qm"lU%'C%dhq(arf48ZpZhj,r(G`lc$0P1
VCUamY0E0hf1pGIled5KF$b`hYhf&GI+59(Pcp1*mb'YBZ8C$$)9HU%-hf5QR1!Z
rMabY9jImbiRi'RSp9YDNcjmNDdUeV)+l$D`j2ANfNVhJ-*2YHm"Jjr9l`'$RGHm
$9!T*cQ5fU,q3!"4IG@f"4`mN)0%BaVH[R12UEK!#rq5,Y@`HSmaDUie+[3iMZmN
EAcJKh'eUA'25N!"'AfrSl`&m1il`1ZC$l(H!`#Er)Jh0rX"F[8h!kib`*Dr$Kqp
QIZmV2T&UAUmk-KU*Sb"rK,[iqC[31pb,9R#AGeBDTZmUVMQU!arLdi%$+I#edpF
iF+Gm*R@(l0lQIZ5m`ekXI-[eR!0rFLaKE*Q,#rk3!2-(BjI5U2lNQqBqrX4N`@j
LIJZV([#RI9ki)N(mDXp3Qbj'UUQVLJ[Yi-X&m,Vi@(l0qbHbdd3VpPY-DkarY)'
- -YP@rJ`110(I'FVVM2T9RA-&lhTF(,'cNf99deA%&&EeQ8qTSD"4rTR#bd"ZI6Hh
VfrFNi6&Aml3k[BY@F0)IA&aEMZ`hlekl")REi"GHb[*jQY*IQC`+f4(,Vc&50%T
kV*`,pZA)@2kCFf,(KbjXQ,(k@)4rh0dc96DFdIdXEFHeY%%))MM6JTCkH[Hq[6K
1eli-&Q2J`Q&'PJZ`+GN'lXUN%eUe%(JCP`IIp-klL@&aiZC@ijC$plL*[$e)CJ5
ri4*emL+`1*5$)A+AJ*-A8keq9L9Up*a)QrK4NMRZLRFipm%l!1F#lpf4R1bqIC!
!qhRk6-Bk0Ua`!Ak'm2)#qkQI1IR,0,NMf@A"r3Xp2IGXL3lE9Vjl%&1QbUdSHAK
- -N9UeiP&DK6pRlJ`LM[krN[ZrVpFATe$5j-PpHNkB0H509l%PEjQ0!I%5REZIAVT
UX8iei-AaZ$[H2ECKfj`5Y2"`5(m1TqER6l*ciaddhY[aXr9,eZ!pN!#kr(VQ28p
cdFea8!ABF!!p[cR`iR*XR(hVpcq"AFMqM2,cMa#hjm0NAVc%k(PHBQPdc&cmp$4
i@[lDPTmeT6Jh2V(rLf8k4DKj%Gb'pJmpS[K0TTIrCPBf3r2fM6r"(Ml[AZ9[p+0
l@XHE6#A8UHDR6KiAa`e6MrU($J8))hfEF[aZTYmqYe0YRYZS[Q0ePXPk"*cj$qC
U*DrH(Nm6A+raH4RPjlq#EjF$2JN!!"LVABm!!J!09@adFQ&6E'PY4Q&cG!%!!!!
)69"69%e38b#LKF+"T["["3%!if#91!!#!!"31!!!!!!!!#k6!!!!!"0"BQpeG#"
9E(4bB90XD@e'BA0d!3!!,TY849K869"6)++CJZZPL!D!!3!9HZ9[!!B!!!'X!!!
C[`!!!8S!!!IS'dX!!!:
+++++++++++++++++++++++++++
From: sw@network-analysis-ltd.co.uk (Sak Wathanasin)
Date: 1 Oct 92 13:48:52 GMT
Organization: Network Analysis Ltd
In article <92275.011613TOGE@SLACVM.SLAC.STANFORD.EDU> (comp.sys.mac.programmer), TOGE@SLACVM.SLAC.STANFORD.EDU (Nobukazu Toge) writes:
>
> If someone has written an MPW tool to show assembly + source listing,
> that's certainly much nicer.
There was a tool called UltraSlimFast distributed on the developer CDs. I
think that's what Keith was refering to. I haven't used it for a while. SourceBug
will show assembly code (I select the source line, then switch to "View assembler",
and the assm code corresponding to the selected src line is highlighted), and so
will ObjectMaster from a menu option in its browser window.
Sak Wathanasin
Network Analysis Limited
178 Wainbody Ave South, Coventry CV3 6BX, UK
uucp: ...!uknet!nan!sw Phone: (+44) 203 419996
AppleLink: NAN.LTD Internet: sw@network-analysis-ltd.co.uk
+++++++++++++++++++++++++++
From: TOGE@SLACVM.SLAC.STANFORD.EDU (Nobukazu Toge)
Date: 2 Oct 92 02:30:17 GMT
Organization: Stanford Linear Accelerator Center
Sak Wathonasin (sw@network-analysis-ltd.co.uk) mentioned UltraSlimFast
and Manuel Veloso (veloso@husc9.harvard.edu) actually has posted the
file yesterday (today?). I tried it just a moment ago. It certainly
works! (system 7.0.1 with MPW 3.3a14). Thanks!
I think I've seen UltraSlimFast long time ago on one of those CDs, but
I never cared to figure out what it was :( :)
- - Nobu Toge (ex-SLAC, now-KEK)
#include <StandardDisclaimers.h>
+++++++++++++++++++++++++++
From: ksand@apple.com (Kent Sandvik)
Date: 7 Oct 92 02:45:51 GMT
Organization: Apple
In article <92275.183018TOGE@SLACVM.SLAC.STANFORD.EDU>, Nobukazu Toge
<TOGE@SLACVM.SLAC.STANFORD.EDU> wrote:
> Sak Wathonasin (sw@network-analysis-ltd.co.uk) mentioned UltraSlimFast
> and Manuel Veloso (veloso@husc9.harvard.edu) actually has posted the
> file yesterday (today?). I tried it just a moment ago. It certainly
> works! (system 7.0.1 with MPW 3.3a14). Thanks!
> I think I've seen UltraSlimFast long time ago on one of those CDs, but
> I never cared to figure out what it was :( :)
I assume you ment the System 7 CD. I'm interested to hear that
the tool still works with the new MPW versions. I never got it to
work with MPW 3.2.
Kent
- -------------------
Kent Sandvik (UUCP: ....!apple!ksand; INTERNET: ksand@apple.com)
DISCLAIMER: Private activities on the Net.
+++++++++++++++++++++++++++
From: REEKES@applelink.apple.com (Jim Reekes)
Date: 8 Oct 92 02:12:40 GMT
Organization: Apple Computer, Inc.
In article <ksand-061092194618@wintermute.apple.com>, ksand@apple.com (Kent
Sandvik) wrote:
>
> In article <92275.183018TOGE@SLACVM.SLAC.STANFORD.EDU>, Nobukazu Toge
> <TOGE@SLACVM.SLAC.STANFORD.EDU> wrote:
> > Sak Wathonasin (sw@network-analysis-ltd.co.uk) mentioned UltraSlimFast
> > and Manuel Veloso (veloso@husc9.harvard.edu) actually has posted the
> > file yesterday (today?). I tried it just a moment ago. It certainly
> > works! (system 7.0.1 with MPW 3.3a14). Thanks!
>
> > I think I've seen UltraSlimFast long time ago on one of those CDs, but
> > I never cared to figure out what it was :( :)
>
> I assume you ment the System 7 CD. I'm interested to hear that
> the tool still works with the new MPW versions. I never got it to
> work with MPW 3.2.
I've been using UltraSlimFast 2.0a3 for a long time now, and it continues
to work fine. The tool depends on the format of the object file created
by the compilier, so new MPW versions shouldn't affect it. The name of
the tool had to be changed for obvious legal reasons. I don't know how
it's distributed.
One thing worth noting, you cannot compile with the -opt full flag when
using UltraSlimFast. UltraSlimFast depends on -sym full, which disables
the compilier's optimizations. This is the side affect of trying to
create object code that can be examined at the source level.
- -----------------------------------------------------------------------
Jim Reekes, Polterzeitgeist | Macintosh Toolbox Engineering
| Sound Manager Expert
Apple Computer, Inc. | RAll opinions expressed are mine, and do
20525 Mariani Ave. MS: 81-KS | not necessarily represent those of my
Cupertino, CA 95014 | employer, Apple Computer Inc.S
---------------------------
End of C.S.M.P. Digest
**********************